package com.puppyrescue;



import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseManager {

		private SQLiteDatabase db;
		private SQLiteDatabase dbR;
		private final Context context;
		private DBHelper dbHelper;
		private DBHelper dBHelperR;
		// INNER CLASS 
		private static class DBHelper extends SQLiteOpenHelper {
		   
		    public static final String DB_NAME = "puppyrescue";
		    public static final String TABLE_NAME = "pr_segnalazione"; 
		    public static final int DB_VERSION = 1;
		    
		    
		    //Stringa per creare la tabella segnalazione
		    private static final String CREATE_TABLE_QUERY = 
		    		"CREATE TABLE IF NOT EXISTS pr_segnalazione (" +
		    		"id int(11)  PRIMARY KEY , " +
		    		"date_hour datetime NOT NULL, " +
		    		"city varchar(300) , " +
		    		"place varchar(300) , longitude double NOT NULL, " +
		    		"latitude double NOT NULL,is_aggressive tinyint(1) NOT NULL, " +
		    		"is_wounded tinyint(1) NOT NULL, is_at_risk tinyint(1) NOT NULL, " +
		    		"has_collar tinyint(1) NOT NULL,species varchar(255) NOT NULL,"+
		    		"breed varchar(255) NOT NULL,color varchar(255) NOT NULL,"+
		    		"size varchar(255) NOT NULL,note text, telephone varchar(20) , " +
		    		"photo_url varchar(500) )";
		      
		  
		    public DBHelper(Context context) {
		        super(context, DB_NAME, null, DB_VERSION);
		        // TODO Auto-generated constructor stub
		    }
		    
		    @Override
		    public void onCreate(SQLiteDatabase db) {
		        
		        db.execSQL(CREATE_TABLE_QUERY);
		    }
		   
		    @Override
		    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME );
		        onCreate(db);
		    }
		 
		}


	public DataBaseManager(Context context) {
	    this.context = context;
	}

	public DataBaseManager open() throws SQLException {
	    //mDbHelper = new DBHelper(mContext);
	    
	    return this;
	}

	public void close() {
	    //mDbHelper.close();
	}
	/**
	 * Aggiunge un oggetto segnalazione all'interno della tabella pr_segnalazione del db locale
	 * 
	 * @param segnalazione la segnalazione da aggiungere nel database locale
	 * @return L'ID del record inserito 
	 */
	public long addSegnalazione(Segnalazione segnalazione){
		 
		 long result;
		 
		 dbHelper = new DBHelper(context);
		 db = dbHelper.getWritableDatabase();
		 ContentValues initialValues = new ContentValues();
		 Cursor rc= db.rawQuery("SELECT MAX(id) FROM "+dbHelper.TABLE_NAME,null);
		 rc.moveToNext();
		 initialValues.put("id", rc.getString(0)==null? 0 : Integer.parseInt(rc.getString(0))+1 );
		 initialValues.put("date_hour", segnalazione.getDateHour());
		 initialValues.put("city", segnalazione.getPlace());
	     initialValues.put("place", segnalazione.getPlace());
	     initialValues.put("latitude", segnalazione.getLatitude());
	     initialValues.put("longitude", segnalazione.getLongitude());
	     initialValues.put("is_aggressive",segnalazione.isAggressive());
	     initialValues.put("is_wounded",segnalazione.isWounded());
	     initialValues.put("is_at_risk",segnalazione.isAtRisk());
	     initialValues.put("has_collar",segnalazione.hasCollar());
	     initialValues.put("species", segnalazione.getSpecies());
	     initialValues.put("breed", segnalazione.getBreed());
	     initialValues.put("color", segnalazione.getColor());
	     initialValues.put("size", segnalazione.getSize());
	     
	     result = db.insert("pr_segnalazione", null, initialValues);
	     
		return result;
	}

	public Cursor getSegnalazioni(){
			dbHelper=new DBHelper(context);
			dbR = dBHelperR.getReadableDatabase();
			
			Cursor rcR= dbR.rawQuery("SELECT * FROM "+dBHelperR.TABLE_NAME,null);
			
			return rcR;
			
	}

	}
	
